home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Internet / News / Alexandra.0.82 / Source / AMGErrorHandling.subproj / EMErrorAction.m < prev    next >
Encoding:
Text File  |  1996-01-30  |  4.2 KB  |  251 lines

  1.  
  2. #import "EMErrorAction.h"
  3. #import <appkit/appkit.h>
  4. #import <syslog.h>
  5.  
  6. #define intstrg(val) { val, #val }
  7. #define EOTAB -95
  8.  
  9. typedef struct 
  10.     {
  11.     int        intval;
  12.     char    *symbconst;
  13.     } EMSymbConst;
  14.     
  15.     
  16. static EMSymbConst priorities[]=
  17.     {
  18.     intstrg(LOG_EMERG),
  19.     intstrg(LOG_ALERT),
  20.     intstrg(LOG_CRIT),
  21.     intstrg(LOG_ERR),
  22.     intstrg(LOG_WARNING),
  23.     intstrg(LOG_NOTICE),
  24.     intstrg(LOG_INFO),
  25.     intstrg(LOG_DEBUG),
  26.     intstrg(EOTAB)
  27.     };
  28.  
  29. @implementation EMErrorAction:Object
  30.  
  31. //--------------------------------------------------------------------------------
  32. // INIT & FREE
  33. //--------------------------------------------------------------------------------
  34.  
  35. - initType:(EMErrorActionType)aType;
  36.     {
  37.     [super init];
  38.     type=aType;
  39.     return self;
  40.     }
  41.     
  42.  
  43. - (EMErrorActionType)type;
  44.     {
  45.     return type;
  46.     }
  47.  
  48.  
  49. //--------------------------------------------------------------------------------
  50. // ARCHIVIERUNG
  51. //--------------------------------------------------------------------------------
  52.  
  53. - write:(NXTypedStream *)stream;
  54.     {
  55.     [super write:stream];
  56.     NXWriteTypes(stream,"i***",&type,&msgTemplate,&support1,&support2);
  57.     return self;
  58.     }
  59.     
  60.     
  61. - read:(NXTypedStream *)stream;
  62.     {
  63.     [super read:stream];
  64.     NXReadTypes(stream,"i***",&type,&msgTemplate,&support1,&support2);
  65.     return self;
  66.     }
  67.  
  68.  
  69. //--------------------------------------------------------------------------------
  70. // Private I-VAR
  71. //--------------------------------------------------------------------------------
  72.  
  73. - setSupport1:(const char *)strg ifType:(int)exptype;
  74.     {
  75.     if(type!=exptype)
  76.         return nil;
  77.     if(support1)
  78.         NX_FREE(support1);
  79.     if(strg)
  80.         support1=NXCopyStringBufferFromZone(strg,[self zone]);
  81.     else
  82.         support1=NULL;
  83.     return self;
  84.     }
  85.  
  86.  
  87. - (const char *)support1IfType:(int)exptype;
  88.     {
  89.     if(type!=exptype)
  90.         return NULL;
  91.     return support1;
  92.     }
  93.     
  94.  
  95.  
  96. - setSupport2:(const char *)strg ifType:(int)exptype;
  97.     {
  98.     if(type!=exptype)
  99.         return nil;
  100.     if(support2)
  101.         NX_FREE(support2);
  102.     if(strg)
  103.         support2=NXCopyStringBufferFromZone(strg,[self zone]);
  104.     else
  105.         support2=NULL;
  106.     return self;
  107.     }
  108.  
  109.  
  110. - (const char *)support2IfType:(int)exptype;
  111.     {
  112.     if(type!=exptype)
  113.         return NULL;
  114.     return support2;
  115.     }
  116.  
  117.  
  118. //--------------------------------------------------------------------------------
  119. // Public I-VAR METHODEN
  120. //--------------------------------------------------------------------------------
  121.  
  122. - setMsgTemplate:(const char *)text;
  123.     {
  124.     if(msgTemplate)
  125.         NX_FREE(msgTemplate);
  126.     msgTemplate=NXCopyStringBufferFromZone(text,[self zone]);
  127.     return self;
  128.     }
  129.  
  130.  
  131. - (const char *)msgTemplate;
  132.     {
  133.     return msgTemplate;
  134.     }
  135.     
  136.  
  137.  
  138. - setPortname:(const char *)name;
  139.     {
  140.     return [self setSupport1:name ifType:EMActionDO];
  141.     }
  142.     
  143. - (const char *)portName;
  144.     {
  145.     return [self support1IfType:EMActionDO];
  146.     }    
  147.  
  148.  
  149. - setSelector:(const char *)name;
  150.     {
  151.     return [self setSupport2:name ifType:EMActionDO];
  152.     }
  153.     
  154. - (const char *)selector;
  155.     {
  156.     return [self support2IfType:EMActionDO];
  157.     }    
  158.  
  159.  
  160.  
  161. - setPriority:(const char *)name;
  162.     {
  163.     int        i;
  164.     char    p[10];
  165.     
  166.     for(i=0;priorities[i].intval!=EOTAB;i++)
  167.         if(!strcmp(name,priorities[i].symbconst))
  168.             {
  169.             sprintf(p,"%d", priorities[i].intval);
  170.             break;
  171.             }
  172.     if(priorities[i].intval==EOTAB)
  173.         return nil;
  174.     return [self setSupport1:p ifType:EMActionSyslog];
  175.     }
  176.     
  177. - (const char *)priority;
  178.     {
  179.     return [self support1IfType:EMActionSyslog];
  180.     }
  181.  
  182.  
  183.  
  184. - setFilename:(const char *)name;
  185.     {
  186.     return [self setSupport1:name ifType:EMActionLogfile];
  187.     }
  188.  
  189. - (const char *)filename;
  190.     {
  191.     return [self support1IfType:EMActionLogfile];
  192.     }
  193.  
  194.  
  195.  
  196. - setRecipient:(const char *)name;
  197.     {
  198.     return [self setSupport1:name ifType:EMActionMail];
  199.     }
  200.  
  201. - (const char *)recipient;
  202.     {
  203.     return [self support1IfType:EMActionMail];
  204.     }    
  205.  
  206.  
  207.  
  208. - setSubject:(const char *)subject;
  209.     {
  210.     return [self setSupport2:subject ifType:EMActionMail];
  211.     }
  212.  
  213. - (const char *)subject;
  214.     {
  215.     return [self support2IfType:EMActionMail];
  216.     }    
  217.  
  218.  
  219.  
  220. - setTitle:(const char *)title;
  221.     {
  222.     return [self setSupport1:title ifType:EMActionAlert];
  223.     }
  224.  
  225.  
  226. - (const char *)title;
  227.     {
  228.     return [self support1IfType:EMActionAlert];
  229.     }
  230.     
  231.     
  232. - setButton:(const char *)title;
  233.     {
  234.     return [self setSupport2:title ifType:EMActionAlert];
  235.     }
  236.     
  237.  
  238. - (const char *)button;
  239.     {
  240.     return [self support2IfType:EMActionAlert];
  241.     }
  242.  
  243.  
  244. //--------------------------------------------------------------------------------
  245. // THAT'S IT
  246. //--------------------------------------------------------------------------------
  247.  
  248. @end
  249.  
  250.  
  251.